//封装axios函数
function axios({method,url,params,data}){
  //将请求方法转为大写
  method = method.toUpperCase()
  //返回一个promise对象
  return new Promise((resolve,reject)=>{
    //创建XML对象
    const xhr = new XMLHttpRequest();
    //初始化
    //处理params对url进行拼接
    let str = ''
    for (let i in params){
      str += `${i}=${params[i]}&`
    }
    //不截取最后一位&，最后一位的下标是-1
    str = str.slice(0,-1)
    xhr.open(method,url+'?'+str)
    //get请求体是空的，但是push，post等是由请求体
    if(method === 'POST' || method==='PUSH'||method == 'DELETE'){
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
        //设置请求体
        xhr.send(JSON.stringify(data))
    }else{
      xhr.send()
    }
    xhr.responseType = 'json'
    //处理结果
    xhr.onreadystatechange= function(){
      if(xhr.status >= 200 && xhr.status <=400){
        resolve({
          status:xhr.status,
          message:xhr.statusText,
          body:xhr.res
        })
      }else{
        reject(
          new Error('请求失败，状态码为'+xhr.status)
        )
      }
    }
  })
}